<?php
namespace app\common\tool;
use \BadMethodCallException;
use think\Session;
use app\constant\user;
use app\common\traits\Singleton;
class UserTool extends Singleton{
	// 用户id
	private $id;
	
	// 用户真实姓名
	private $username;
	
	// 用户邮箱
	private $email;
	
	// 用户密码
	private $password;
	
	// 用户密码盐值
	private $password_salt;
	
    /*
    *@access public
    *@param array $data 初始数据
    *@return  void 
     */
	public function onConstruct(array $data=[]){
       if(empty($data)){
       	 $data=(array)session::get('crruct_user');
       }
       $this->reflection=new \ReflectionClass(static::class);

       $this->traversalSetPropertiesValue($data);
	}
    /*
    *设置私有变量
    *@param array $data 需要设置的数据 默认为null
    *@return bool
    */
	public function traversalSetPropertiesValue($data=null){
        $reflectionPropertys=$this->reflection->getProperties(\ReflectionProperty::IS_PRIVATE);
        foreach($reflectionPropertys as $reflectionobj){
             $gName=$reflectionobj->getName();
             $this->{$gName}=isset($data[$gName])?$data[$gName]:null;
        }
	}

	/*
	* 对getID getStatus getRole等函数的支持
	*@access public
    *@param array $fun 函数名称
    *@param $arg 相关参数
    *@return bool|int|string
	*/
	public function __call($fun,$arg){
        if(substr($fun,0,3)=="get"){
             return $this->{strtolower(substr($fun,3))};
        }else{
             return false;
        }
	}

	//验证是否为管理员
    public function isAdmin(){
    	return $this->role==user\USER_ROLE_ADMIN;
    }
	//验证是否为专家
    public function isExpert(){
    	return $this->role==user\USER_ROLE_EXPERT;
    }

}